云原生数据仓库 AnalyticDB PostgreSQL 版数据库安装Zhparser插件后可以实现全文检索时的中文分词。
全文检索概述
PostgreSQL默认按照空格及各种标点符号来分词,不支持中文分词。云原生数据仓库 AnalyticDB PostgreSQL 版通过集成Zhparser扩展来支持中文分词。
一般情况下,全文检索可以采用如下两种方法:
搜索表:
SELECT name FROM <table...> WHERE to_tsvector('english', name) @@ to_tsquery('english', 'friend');
创建GIN索引:
CREATE INDEX <idx_...> ON <table...> USING gin(to_tsvector('english', name));
配置Zhparser
安装Zhparser插件。
使用全文检索时的中文分词功能之前,您需要在云原生数据仓库 AnalyticDB PostgreSQL 版实例插件管理中安装Zhparser插件。具体操作,请参见安装、升级与卸载插件。
配置中文解析器,取名为zh_cn。
CREATE TEXT SEARCH CONFIGURATION zh_cn (PARSER = zhparser);
配置完成后,您可以通过
\dF
和\dFp
命令查看配置。目前暂不支持用户自定义词典。查看分词策略。
查看Zhparser的词典配置:
SELECT ts_token_type('zhparser');
返回信息如下:
ts_token_type --------------------------------- (97,a,"adjective,形容词") (98,b,"differentiation,区别词") (99,c,"conjunction,连词") (100,d,"adverb,副词") (101,e,"exclamation,感叹词") (102,f,"position,方位词") (103,g,"root,词根") (104,h,"head,前连接成分") (105,i,"idiom,成语") (106,j,"abbreviation,简称") (107,k,"tail,后连接成分") (108,l,"tmp,习用语") (109,m,"numeral,数词") (110,n,"noun,名词") (111,o,"onomatopoeia,拟声词") (112,p,"prepositional,介词") (113,q,"quantity,量词") (114,r,"pronoun,代词") (115,s,"space,处所词") (116,t,"time,时语素") (117,u,"auxiliary,助词") (118,v,"verb,动词") (119,w,"punctuation,标点符号") (120,x,"unknown,未知词") (121,y,"modal,语气词") (122,z,"status,状态词") (26 rows)
查看zh_cn的结构(Configuration):
SELECT * FROM pg_ts_config_map WHERE mapcfg=(SELECT oid FROM pg_ts_config WHERE cfgname='zh_cn');
添加或删除分词策略:
添加分词策略:
添加名词(n)、动词(v)、形容词(a)、成语(i)、叹词(e)和习用语(l) 六种分词策略:
ALTER TEXT SEARCH CONFIGURATION zh_cn ADD MAPPING FOR n,v,a,i,e,l WITH simple;
删除分词策略:
删除名词(n)、动词(v)、形容词(a)、成语(i)、叹词(e)和习用语(l) 六种分词策略:
ALTER TEXT SEARCH CONFIGURATION zh_cn DROP MAPPING IF exists FOR n,v,a,i,e,l;
通过以下下两个函数测试全文检索中文分词功能:
to_tsvector:
SELECT to_tsvector('zh_cn', '有两种方法进行全文检索');
返回信息如下:
to_tsvector --------------------------------------- '全文检索':4 '方法':2 '有':1 '进行':3 (1 row)
to_tsquery:
SELECT to_tsquery('zh_cn', '有两种方法进行全文检索');
返回信息如下:
to_tsquery ------------------------------------- '有' & '方法' & '进行' & '全文检索' (1 row)
相关文档
全文检索总体介绍,请参见全文检索。
全文检索函数和操作符,请参见文本检索函数和操作符。
反馈
- 本页导读 (1)